#pragma once

#include "accel.h"
#include "camera.h"

#include <string>

namespace kp {

	struct Scene : public Primitive {
		const std::string name;

		Ref<Camera> camera;
		Ref<Accel> accel;

		Scene(const std::string& na, Ref<Camera> ca, Ref<Accel>ac)
			: name(na), camera(ca), accel(ac) {
		}

		virtual bool Intersect(const Ray& r, Intersection& rec) const override {
			return accel->Intersect(r, rec);
		}
		virtual Ref<Material> getMaterial() const override { return nullptr; }
		virtual void ComputeScatteringFunctions(Intersection* si,
			TransportMode mode, bool allowMultipleLobes) const override {}
		
		virtual BBox3f getBound() const override {
			return accel->getBound();
		}

	};

	class SceneLoader {
	public:

	};

}